package com.myObserver;

/**
 * 观察者模式
 * @author yulipeng
 *
 */
public class ZMainTest {

	public static void main(String[] args) {
		/**
		 * 1. 自定义模板
		 */
		// 创建目标
		ConcreteSubject s = new ConcreteSubject();
		// 创建观察者
		ConcreteObserver o1 = new ConcreteObserver();
		o1.setName("张三");
		ConcreteObserver o2 = new ConcreteObserver();
		o2.setName("李四");
		
		// 注册观察者
		s.attach(o1);
		s.attach(o2);
		// 目标发布天气
		s.change("你好");
		System.out.println("=======================");
		
		/**
		 * 2. JAVA提供的对观察者模式的支持
		 */
		//创建被观察者对象
		JdkSubject watched = new JdkSubject();
        //创建观察者对象，并将被观察者对象登记
		JdkObserver watcher = new JdkObserver(watched);
        //给被观察者状态赋值
        watched.setData("start");
        watched.setData("run");
        watched.setData("stop");

	}
}
